package com.neuedu.tast.factory;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import com.neuedu.tast.bean.User;
import com.neuedu.tast.datacontroller.TeacherDataController;
import com.neuedu.tast.dataimpl.TeacherDataImpl;
import com.neuedu.tast.util.CreateId;

/**
 * 这个类用于调用功能，显式在控制台
 * @author Administrator
 *
 */
public class FactoryController {
	/**
	 * 1:总的菜单
	 *        1：学生登录
	 *        2： 教师登录
	 *        0：退出
	 * 
	 * 2：教师端菜单
	 *       1：添加学生
	 *       2：查找学生
	 *       3：删除学生
	 *       4：修改学生
	 *       5：保存学生
	 *       6：任意键退出
	 * 3：学生端菜单
	 *      省略
	 */
	
	
	/*
	 *  * 1:总的菜单
	 *        1：学生登录
	 *        2： 教师登录
	 *        0：退出
	 */
	//用于采集控制条的输入信息
	private static Scanner scan=new Scanner(System.in);
	
	//教师的功能对象
	private static TeacherDataController teacher=new TeacherDataImpl();
	
	//保存学生信息的list对象
	static List<User> listuser=new ArrayList<>();
	
	public static void menu() throws Exception{
		//循环执行各种功能，什么时候退出：0 退出
		while(true) {
			//  显式菜单
			System.out.println("*************用户管理系统**********");
			System.out.println("*\t1：学生登录\t*");
			System.out.println("*\t2：教师登录\t*");
			System.out.println("*\t0：退        出\t*");
			System.out.println("********************************");
			//输入功能按钮---输入1输入2输入0
			System.out.println("输入功能键（0,1,2）:");
			int menun0=scan.nextInt();
			//判断功能键 的合理性
			while(menun0>2||menun0<0) {
				System.out.println("输入的功能键有误，请重新输入：");
				menun0=scan.nextInt();
			}
			
			
			//根据输入的功能按钮执行相对应的功能--学生或者教师的登录，退出
			if(menun0==1) {
				  System.out.println("登录学生信息");
				  
			}
			
          if(menun0==2) {
        	  System.out.println("******登录教师信息*******");
        	  
        	  System.out.println("用户名：");
              String username=scan.next();
              
              System.out.println("密码：");
              String userpwd=scan.next();
              
              User user=teacher.selectByUsernameAndUserpwd(username, userpwd);
              //1：没有信息null
                if(user==null) {
                	//用户名或者密码输入有误的时候
                	//有可能，重新输入用户和密码  
                	int flag=0;
                	
                	while(true) {               		
                		//判断是否继续输入
               		    System.out.println("用户名和密码错误，是否继续重新输入：（1：继续2：退出）");
                        flag=scan.nextInt();
                        if(flag==2) {
                        	break;
                        }
    
                		System.out.println("重新输入用户信息");
                		System.out.println("用户名：");
                         username=scan.next();
                        
                        System.out.println("密码：");
                         userpwd=scan.next();
                        
                        user=teacher.selectByUsernameAndUserpwd(username, userpwd);               	                          
                        if(user!=null) {
                	    	  break;
                	     }                       
                	}
                	//user.getLevel()==0:保证教师登录到教师端
                	
                	if(user!=null&& flag!=2&& user.getLevel()==0) {
                		teacherMenu();
                	}
                	//不在输入，而进行学生登录
                	
                }
                //2：有记录
                //用户名和密码在数据库存在，但是是否有权限登录的教师端即判断user.getLevel()==0
                if(user!=null&& user.getLevel()==0) {
            		teacherMenu();
            	}else {
            		System.out.println("登录的信息有误");
            	}
			}
			
          if(menun0==0) {
        	  System.out.println("退出系统\n 欢迎下次使用");
        	  break;
			}
		}
	}
	
	
	public static void teacherMenu() throws Exception {
		
		System.out.println("进入到了教师菜单");
		
		while(true) {
			System.out.println("********************教师端系统*****************");
			System.out.println(" *\t1：添加学生\t*\r\n" + 
					"	 *       2：查找学生\r\n" + 
					"	 *       3：删除学生\r\n" + 
					"	 *       4：修改学生\r\n" + 
					"	 *       5：保存学生\r\n" + 
					"	 *       6：加载学生\n"
					+ "*          0:退出");
			System.out.println("********************************************");
			
			System.out.println("输入功能按钮（0,1,2,3,4,5,6）:");
			int menunt=0;
			do {
				menunt=scan.nextInt();
			}while(menunt>6||menunt<0);
			
			if(menunt==1) {
				System.out.println("添加学生");
				User user=new User();
				System.out.println("学生用户名");
				user.setUsername(scan.next());
				System.out.println("密码");
				user.setUserpwd(scan.next());
				System.out.println("性别（0：男 |1：女）");
				user.setSex(scan.nextInt());
				System.out.println("年龄");
				user.setAge(scan.nextInt());
				System.out.println("电话号码");
				String telephone=scan.next();
				//电话的长度
				while(telephone.length()!=11) {
					System.out.println("重新输入电话号码：");
					telephone=scan.next();
				}
				
				if(telephone.length()==11) {
				   user.setTelephone(telephone);
				}
				System.out.println("qq");
				//qq的格式，---邮箱的格式 --你们要做的，如何判断qq的邮箱格式
				user.setQq(scan.next());
				System.out.println("地址");
				user.setAddress(scan.next());
			
				//level字段字1固定，userid是通过CreateId.getId()自动生成
				user.setLevel(1);
				user.setUserid(CreateId.getId());
				
				boolean flag=teacher.add(user, listuser);
				if(flag) {
					System.out.println("添加成功");
				}else {
					System.out.println("添加失败");
				}
			}
			if(menunt==2) {
				System.out.println("查找学生");
				System.out.println("学号\t\t用户名\t密码\t性别\t年龄\t电话\t\tqq\t地址\t");
				for(User u:listuser) {
					if(u.getLevel()==0)
					{
						continue;
					}
					System.out.println(u.getUserid()+"\t"+u.getUsername()+
							"\t"+u.getUserpwd()+"\t"+u.getSex()+"\t"+u.getAge()
							+"\t"+u.getTelephone()+"\t"+u.getQq()+"\t"+u.getAddress());
				}
				
				
			}
			if(menunt==3) {
				System.out.println("删除学生");
			}
			if(menunt==4) {
				System.out.println("修改学生");
			}
			if(menunt==5) {
				System.out.println("保存学生");
				
				boolean flag=teacher.saveFile(listuser);
				if(flag) {
					System.out.println("保存成功");
				}else {
					System.out.println("保存失败");
				}
			}
			if(menunt==6) {
				System.out.println("加载学生");
				listuser=teacher.getAll();
				if(listuser.size()>0) {
					System.out.println("加载成功");
				}
			}
			if(menunt==0) {
				System.out.println("退出教师系统");
				
				      break;
				
			}
			
		}
	}

	
}
